package redpackage;

import java.util.LinkedList;
import java.util.List;
import java.util.Random;

public class RedPackage {
    /**
     * 1.所有人抢到金额之和等于红包金额，不能超过，也不能少于。
     * 2.每个人至少抢到一分钱。
     * 3.要保证所有人抢到金额的几率相等。
     *
     * 每次抢到的金额 = 随机区间 （0， M / N X 2）
     *
     * 假设有10个人，红包总额100元。100/10X2 = 20, 所以第一个人的随机范围是（0，20 )，平均可以抢到10元。
     * 假设第一个人随机到10元，那么剩余金额是100-10 = 90 元。90/9X2 = 20, 所以第二个人的随机范围同样是（0，20 )，平均可以抢到10元。
     * 假设第二个人随机到10元，那么剩余金额是90-10 = 80 元。80/8X2 = 20, 所以第三个人的随机范围同样是（0，20 )，平均可以抢到10元。
     */

    public static LinkedList<Float> getRedPackage(int totalMoney, int totalCount){
        LinkedList<Float> list = new LinkedList<>();
        int restMoney = totalMoney * 100;
        int restCount = totalCount;
        Random random = new Random();
        for (int i=0; i < restCount-1; i++){
            int currentMoney = random.nextInt(restMoney/restCount * 2) + 1;
            list.add(currentMoney/100f);
            restMoney=restMoney - currentMoney;
        }
        list.add(restMoney/100f);
        return list;
    }


    public static void main(String[] args) {
        LinkedList<Float> resList = getRedPackage(100,5);
        for (Float f:resList){
            System.out.println(f);
        }
    }
}
